2023/12/231636字符
作用域
- 作用域因函数的产生而产生,作用域属于一个函数,一个函数产生了作用域
- 对象可以有属性,一切为对象的东西就都可以有属性
function a(){}
var glob = 100;
a();
// 1.函数被定义 a.[[scope]] --> 0 : GO{}
// 2.函数被执行 a.[[scope]] --> 0 : AO{}
// 1 : GO{}
a.[[scope]] 隐式属性,不可调用
function test(){
var a = 123;
function demo(){
var b = 234;
console.log(a); //--> 123
}
demo();
console.log(b); // 报错 b is not defined
}
test();
作用域链
function a () {
function b () {
var b = 234;
var a = 345;
}
var a = 123;
b();
console.log(a);
}
var glob = 100;
a();
function a () {
function b () {
function c () {}
c();
}
b();
}
a();
// a 函数被定义 a.[[scope]] --> 0 : GO
// a 函数被执行 a.[[scope]] --> 0 : a AO
// 1 : GO
// b 函数被定义 b.[[scope]] --> 0 : a AO
// 1 : GO
// b 函数被执行 b.[[scope]] --> 0 : b AO
// 1 : a Ao
// 2 : GO
// c 函数被定义 c.[[scope]] --> 0 : b AO
// 1 : a Ao
// 2 : GO
// c 函数被执行 c.[[scope]] --> 0 : c AO
// 1 : b AO
// 2 : a Ao
// 3 : GO